kanzi::Renderer Class Reference

#include <kanzi/core.ui/platform/graphics_backend/gl/renderer.hpp>

Public Types

enum  Multisample {
  MultisampleNone, MultisampleARB, MultisampleES2NVidia, MultisampleES3,
  MultisampleES2Ext, MultisampleES2Img
}
 Multisample support code path in Renderer. More...
 
enum  ProgramBinary { ProgramBinaryNone, ProgramBinaryARB, ProgramBinaryES3, ProgramBinaryES2Ext }
 Program binary support code path in Renderer. More...
 
enum  HalfFloatTexture { HalfFloatTextureNone, HalfFloatTextureARB, HalfFloatTextureES3, HalfFloatTextureES2Ext }
 Half float texture support code path in Renderer. More...
 
enum  HalfFloatVertexAttribute { HalfFloatVertexAttributeNone, HalfFloatVertexAttributeDefault, HalfFloatVertexAttributeOES }
 Half float vertex attribute code path in Renderer. More...
 
enum  FloatTexture { FloatTextureNone, FloatTextureARB, FloatTextureES3, FloatTextureES2Ext }
 Float texture support code path in Renderer. More...
 
enum  TexStorage {
  TexStorageNone, TexStorageMultisampleARB, TexStorageARB, TexStorageES2Ext,
  TexStorageES3, TexStorageES31, TexStorageES32
}
 
enum  InvalidateFramebuffer { InvalidateFramebufferNone, InvalidateFramebufferARB, InvalidateFramebufferES3, InvalidateFramebufferES2Ext }
 Framebuffer invalidation support code path in Renderer. More...
 
enum  State {
  StateDepthTest, StateCullFace, StateBlend, StateDepthWrite,
  StateStencilTest, StateStencilWrite, StateMultisample, StateScissorTest,
  StateCoverageWrite, StateCount
}
 Renderer state enumerations. More...
 
enum  FixedMatrix {
  FixedMatrixProjection, FixedMatrixCamera, FixedMatrixWorld, FixedMatrixCameraWorld,
  FixedMatrixProjectionCameraWorld, FixedMatrixCount
}
 List of active matrices renderer keeps track of. More...
 
enum  Support {
  SupportHalfFloatTextureFormatLinear, SupportHalfFloatColorAttachment, SupportNPOTTextureFilter, SupportRenderToMipmapLevels,
  SupportDepth16Renderbuffer, SupportDepth16Texture, SupportDepth24Renderbuffer, SupportDepth24Texture,
  SupportDepth24Stencil8Renderbuffer, SupportDepth24Stencil8Texture, SupportDepth32Renderbuffer, SupportDepth32fRenderbuffer,
  SupportDepth32fTexture, SupportStencil8Renderbuffer, SupportStencil8Texture, SupportExternalTexture,
  SupportTextureFilterAnisotropic, SupportTextureSwizzle, SupportSeamlessCubeMap, SupportRGB8Renderbuffer,
  SupportRG8Formats, SupportRGFormats, SupportIntegerFormats, SupportRGB8Texture,
  SupportRGBA8Renderbuffer, SupportRGBA8Texture, SupportDiscardFramebuffer, SupportInvalidateFramebuffer,
  SupportImplementationColorRead, SupportKHRDebug, SupportShaderBinary, SupportMultipleRenderTargets,
  SupportSRGB, SupportSRGB8Texture, SupportSRGB8TexStorage, SupportETC1NPOT,
  Support10_10_10_2VertexAttribute, SupportDepthComparison, SupportSNORMFormats, SupportFloatTextureFormatLinear,
  SupportFloatColorAttachment, SupportTextureNorm16Formats, SupportCount
}
 
enum  Information {
  InformationGLVendor, InformationGLRenderer, InformationGLVersion, InformationGLShadingLanguageVersion,
  InformationGLExtensions, InformationFormatSupport, InformationShaderBinarySupport, InformationProgramBinarySupport,
  InformationFeatureSupport, InformationImplementationDependent, InformationDebug, InformationAll
}
 
enum  ClearMode {
  ClearModeDisabled, ClearModeUnsignedNormalized, ClearModeUnsignedInteger, ClearModeSignedInteger,
  ClearModeFloat
}
 Per color buffer clear setting. More...
 
enum  Workaround {
  WorkaroundMaliHalfFloatTextureCoordinate, WorkaroundTegra3ColorBufferHalfFloat, WorkaroundAdreno330ColorBufferHalfFloat, WorkaroundChromiumTextureImageUnitCount,
  WorkaroundPVRFrameAMDHost, WorkaroundAMDCompressedTexStorage, WorkaroundPVRFrameDepth32f, WorkaroundVivanteDepth32f,
  WorkaroundFaultyRequiredInternalformat, WorkaroundCount
}
 
typedef void(* FramebufferCallback) (unsigned int frameBufferHandle)
 Callback prototype for setActiveFramebuffer. More...
 

Public Member Functions

 Renderer (const KzcMemoryManager *memoryManager)
 Creates a new renderer object. More...
 
 ~Renderer ()
 
void resetFrame ()
 Resets frame for core renderer, that is, counters for logging rendering infos (triangle count etc.). More...
 
void reset ()
 Resets renderer, e.g. resets its caches and states and syncs renderer variables with actual GL states. More...
 
void initialize (kzUint vertexBufferPoolSize, kzUint indexBufferPoolSize)
 Initializes renderer object. Requires graphics context. More...
 
void uninitialize ()
 Uninitializes renderer object. More...
 
bool isInitialized () const
 Tells whether the renderer is initialized. More...
 
void setActiveGraphicsOutput (GlGraphicsOutput *glGraphicsOutput)
 Sets active surface context for renderer. More...
 
GlGraphicsOutputgetActiveGraphicsOutput () const
 Gets active surface context from renderer. More...
 
KzsWindowgetActiveWindow () const
 
KzsSurfacegetActiveSurface () const
 
KzsGlGraphicsContext * getActiveGraphicsContext () const
 
enum KzsSurfaceType getActiveSurfaceType () const
 
::KzsOpenGlVendor getActiveSurfaceVendor () const
 
void enableState (State state)
 Enables a specific renderer state. More...
 
void disableState (State state)
 Disables a specific renderer state. More...
 
void setState (State state, bool enable)
 Enables or disables the state of a specific renderer state. More...
 
bool getState (State state) const
 Returns state of a specific renderer state. More...
 
void clear ()
 Clears currently bound framebuffer with requested buffers. More...
 
void resetClearTarget ()
 Resets clear targets for renderer. More...
 
void addClearTarget (GraphicsClearTarget target)
 Sets a clearing target for renderer. More...
 
void addClearColor (unsigned int drawBuffer, uint32_t red, uint32_t green, uint32_t blue, uint32_t alpha)
 Register color clear for unsigned integer color buffer. More...
 
void addClearColor (unsigned int drawBuffer, int32_t red, int32_t green, int32_t blue, int32_t alpha)
 Register color clear for signed integer color buffer. More...
 
void addClearColor (unsigned int drawBuffer, float red, float green, float blue, float alpha)
 Register color clear for float color buffer. More...
 
void addClearColor (unsigned int drawBuffer, ColorRGBA colorRGBA)
 Register color clear for unsigned normalized color buffer. More...
 
void addClearColor (unsigned int drawBuffer, ClearMode clearMode)
 Register color clear with value 0. More...
 
void removeClearTarget (GraphicsClearTarget target)
 Removes a clearing target for renderer. More...
 
bool hasClearTarget (GraphicsClearTarget target) const
 Sees if renderer has specific clear target. More...
 
bool isClearEnabled () const
 See if clear is enabled. More...
 
void setClearColor (ColorRGBA colorRGBA)
 Set clear color for renderer. More...
 
void setColorWriteMode (GraphicsColorWriteMode colorWriteMode)
 Set a color write mode for renderer. More...
 
GraphicsColorWriteMode getColorWriteMode () const
 Gets current color write mode from renderer. More...
 
void setScissorTest (optional< ViewportRectangle > scissor)
 Sets scissor test state and optional rectangle for renderer. More...
 
void setClearDepthValue (float clearDepthValue)
 Set clear depth for renderer. More...
 
void setClearStencil (int stencilClearValue)
 Set clear stencil for renderer. More...
 
void setViewport (ViewportRectangle viewport)
 Sets an active view port for renderer. More...
 
void setVertexBuffer (unsigned int vertexBuffer)
 Sets a vertex buffer for renderer. More...
 
void setIndexBuffer (unsigned int indexBuffer)
 Sets an index buffer for renderer. More...
 
void drawBuffers ()
 Render buffers that are currently bound. More...
 
void setVertexCount (unsigned int vertexCount)
 Sets vertex count for renderer. More...
 
void setIndexCount (unsigned int indexCount)
 Sets the index count for renderer. More...
 
void setIndexData (void *indexData)
 Sets index data for renderer. More...
 
void setPrimitiveType (GraphicsPrimitiveType prmitiveType)
 Sets the primitive type for renderer. More...
 
int getUniformLocationSlow (const string &uniformName) const
 Finds uniform location for given uniform from active shader. More...
 
unsigned int getUniformArrayLength (const char *uniformName) const
 Returns array uniform length for given uniform. More...
 
void setUniformInteger (int value, int uniformLocation)
 Sets integer uniform for renderer, using currently bound shader. More...
 
void setUniformFloat (float value, int uniformLocation)
 Sets float uniform for renderer, using currently bound shader. More...
 
void setUniformFloatArray (ShaderProgram::FixedUniform fixedUniform, size_t count, const float *values)
 Sets uniform float array for renderer. More...
 
void setUniformFloatArray (int uniformLocation, size_t count, const float *values)
 Sets uniform float array for renderer. More...
 
void setUniformVec2 (Vector2 value, int uniformLocation)
 Sets uniform vec2 for renderer, using currently bound shader. More...
 
void setUniformVec3 (Vector3 value, int uniformLocation)
 Sets uniform vec3 for renderer, using currently bound shader. More...
 
void setUniformVec4 (Vector4 value, int uniformLocation)
 Sets uniform vec4 for renderer, using currently bound shader. More...
 
void setUniformVecArray (ShaderProgram::FixedUniform fixedUniform, size_t count, const Vector3 *values)
 Sets arbitrary vector array with dimension to renderer, using currently bound shader. More...
 
void setUniformVecArray (int uniformLocation, size_t count, const Vector3 *values)
 Sets arbitrary vector array with dimension to renderer, using currently bound shader. More...
 
void setUniformVecArray (ShaderProgram::FixedUniform fixedUniform, size_t count, const Vector4 *values)
 Sets arbitrary vector array with dimension to renderer, using currently bound shader. More...
 
void setUniformVecArray (int uniformLocation, size_t count, const Vector4 *values)
 Sets arbitrary vector array with dimension to renderer, using currently bound shader. More...
 
void setUniformColorRGBA (ColorRGBA value, int uniformLocation)
 Sets uniform colorRGBA for renderer, using currently bound shader. More...
 
void setUniformMatrix3x3 (Matrix3x3 value, int uniformLocation)
 Sets matrix3x3 uniform for renderer, using currently bound shader. More...
 
void setUniformMatrix4x4 (Matrix4x4 value, int uniformLocation)
 Sets matrix4x4 uniform for renderer, using currently bound shader. More...
 
void setActiveScalar (GraphicsScalar scalar, float value)
 Switches an scalar value for renderer if necessary, e.g. depth clear value. More...
 
float getActiveScalar (GraphicsScalar scalar) const
 Returns a current scalar value from renderer. More...
 
void setBlendMode (GraphicsBlendMode blendMode)
 Sets a blend mode for renderer. More...
 
GraphicsBlendMode getBlendMode () const
 Gets a blend mode for renderer. More...
 
void setCullMode (GraphicsCullMode cullMode)
 Sets a cull mode for renderer. More...
 
GraphicsCullMode getCullMode () const
 Gets a cull mode for renderer. More...
 
void setDepthTest (GraphicsCompareFunction depthMode)
 Sets a depth pass mode for renderer. More...
 
GraphicsCompareFunction getDepthTest () const
 Gets a depth pass mode for renderer. More...
 
void setStencilFunction (GraphicsCompareFunction stencilCompareFunction, unsigned int referenceValue, unsigned int maskValue)
 Sets a stencil function for renderer. More...
 
void setStencilOperation (GraphicsStencilOperation stencilFailOperation, GraphicsStencilOperation stencilPassDepthFailOperation, GraphicsStencilOperation stencilPassDepthPassOperation)
 Sets a stencil operation for renderer. More...
 
void getStencilFunction (GraphicsCompareFunction *out_stencilCompareFunction, unsigned int *out_referenceValue, unsigned int *out_maskValue) const
 Gets stencil function from renderer. More...
 
void getStencilOperation (GraphicsStencilOperation *out_stencilFailOperation, GraphicsStencilOperation *out_stencilPassDepthFailOperation, GraphicsStencilOperation *out_stencilPassDepthPassOperation) const
 Gets a stencil operation from renderer. More...
 
void setMatrix (FixedMatrix matrixType, Matrix4x4 matrix)
 Sets matrix for a renderer. More...
 
Matrix4x4 getMatrix (FixedMatrix matrixType) const
 Gets a matrix from renderer. More...
 
void calculateProjectionCameraWorldMatrix ()
 Calculates projection * camera * world matrix. More...
 
void applyTransformation ()
 Applies transformations from renderer to GPU. More...
 
void setActiveTextureUnit (unsigned int textureUnit)
 Sets texture unit active. More...
 
void applyTextureSizeUniforms (ShaderTextureUniform textureUniforms, unsigned int textureWidth, unsigned int textureHeight)
 Applies texture uniforms for the renderer. More...
 
void applyTexture (int textureUniformLocation, unsigned int textureHandle, Texture::Type type)
 Applies texture for renderer using currently bound shader (required) and texture uniform (required). More...
 
void setUniformTexture (int uniformLocation)
 Sets texture uniform location for renderer, effectively used for storing the integer in renderer to retrieve it when binding textures. More...
 
int getUniformTexture () const
 Gets texture uniform location from renderer. More...
 
void detachTextureHandle (unsigned int textureHandle)
 Detaches texture handle from all texture units it has been applied for. More...
 
void detachTexture ()
 Detaches texture from rendering. More...
 
void invalidateTextureHandle (unsigned int textureHandle)
 Invalidates texture handle from renderer without affecting GL state. More...
 
pair< Texture::Type, unsigned int > bindTexture (Texture::Type type, unsigned int texture)
 Binds specified texture of specified type to currently active texture unit. More...
 
unsigned int generateTexture ()
 Generates new texture for renderer. More...
 
void setTextureImage2D (unsigned int glTextureImageTarget, unsigned int mipmapLevel, GraphicsFormat format, unsigned int width, unsigned int height, const void *data)
 Uploads texture data to GPU. More...
 
void setTextureSubImage2D (unsigned int glTextureImageTarget, unsigned int mipmapLevel, GraphicsFormat format, unsigned int x, unsigned int y, unsigned int width, unsigned int height, const void *data)
 Uploads texture subimage data to GPU. More...
 
void textureStorage (Texture::Type type, int sampleCount, int mipmapLevelCount, GraphicsFormat format, unsigned int width, unsigned int height, unsigned int depth, bool fixedSampleLocations)
 Specifies immutable texture format and shape. More...
 
void generateMipmaps (Texture::Type textureType)
 Generates mipmaps for currently bound texture. More...
 
void deleteTexture (unsigned int textureHandle)
 Deletes texture via renderer. More...
 
void setTextureAddressingMode (Texture::Type type, Sampler::AddressingMode texAddress)
 Sets wrap mode for currently bound texture in current texture unit. More...
 
void setTextureFilter (Texture::Type type, Sampler::Filter mininificationFilter, Sampler::Filter magnificationFilter, Sampler::MipmapMode mipmapMode, float anisotropy)
 Sets texture filter for currently bound texture in current texture unit. More...
 
void setTextureSwizzleMask (Texture::Type target, const TextureSwizzleMask &mask)
 Sets texture swizzle mask for currently bound alpha only texture in current texture unit. More...
 
void setTextureCompare (Texture::Type type, bool isEnabled, GraphicsCompareFunction textureCompareFunction)
 Sets texture comparison function for currently bound texture in current texture unit. More...
 
void setPixelStorePack (unsigned int packBytes)
 Sets pack storage for renderer. Specifies how the pixel data is aligned. More...
 
void setPixelStoreUnpack (unsigned int unpackBytes)
 Sets unpack storage for renderer. Specifies how the pixel data is aligned. More...
 
unsigned int createShader (ShaderType type)
 Creates shader. More...
 
unsigned int createShaderProgram ()
 Creates shader program. Returns the handle to the program. More...
 
void refreshRenderContext (bool geometryRendering)
 Refreshes render context to contain all proper states. More...
 
void attachShaderToProgram (unsigned int programHandle, unsigned int shaderHandle)
 Attaches shader to program. More...
 
void detachShaderFromProgram (unsigned int programHandle, unsigned int shaderHandle)
 Detaches shader from program. More...
 
void bindAttributeToLocation (unsigned int programHandle, unsigned int locationIndex, kzString attributeName)
 Binds attribute to given location index, for example "kzPosition" to 0. More...
 
bool linkShaderProgram (unsigned int programHandle, kzString shaderName)
 Links shader program with given handle. More...
 
bool compileSourceShader (ShaderType shaderType, unsigned int shaderHandle, const char *const shaderCode, string_view shaderName)
 Compiles source shader and deploys it to GPU. More...
 
bool deployBinaryShader (unsigned int count, const unsigned int *shaders, unsigned int binaryFormat, const void *data, unsigned int dataSize)
 Deploys binary shaders. More...
 
bool deployBinaryProgram (unsigned int program, unsigned int binaryFormat, const void *data, unsigned int dataSize)
 Initializes shader program from program binary data. More...
 
string getProgramBinary (unsigned int program, unsigned int &binaryFormat)
 Gets binary representation for GL shader program. More...
 
void deleteShaderProgram (unsigned int programHandle)
 Deletes shader program and attached shaders. More...
 
void deleteShader (unsigned int shaderHandle)
 Deletes shader. More...
 
int getFixedUniformLocation (ShaderProgram::FixedUniform fixedUniform) const
 Returns fixed shader uniform location of given fixed uniform. More...
 
unsigned int generateFramebuffer ()
 Generates new texture for renderer. More...
 
void deleteFramebuffer (unsigned int frameBufferHandle)
 Deletes framebuffer. More...
 
void bindFramebuffer (unsigned int frameBufferHandle)
 Binds framebuffer. More...
 
bool isFramebufferComplete ()
 Checks if the framebuffer status is complete. More...
 
void invalidateFramebufferAttachments (Framebuffer::Target target, bitset< Surface::APIAttachmentCount > attachments) const
 Invalidates framebuffer attachments. More...
 
void framebufferTexture2D (unsigned int glTextureImageTarget, Surface::APIAttachment attachment, unsigned int textureHandle, unsigned int mipmapLevel, unsigned int implicitSampleCount)
 Attaches texture to the currently active Framebuffer. More...
 
void framebufferRenderbuffer (Surface::APIAttachment attachment, unsigned int renderbuffer)
 Attaches renderbuffer to the currently active Framebuffer. More...
 
unsigned int generateRenderbuffer ()
 Generates new texture for renderer. More...
 
void deleteRenderbuffer (unsigned int renderbuffer)
 Deletes framebuffer. More...
 
void bindRenderbuffer (unsigned int renderbuffer)
 Binds framebuffer for editing. More...
 
void renderbufferStorage (GraphicsFormat format, unsigned int width, unsigned int height, unsigned int explicitSampleCount)
 Sets storage for currently bound renderbuffer. More...
 
unsigned int generateBuffer ()
 Generates new index or vertex buffer or uniform buffer object name. More...
 
void setVertexBufferData (unsigned int dataSize, const void *data)
 Sets static vertex buffer data. More...
 
void setIndexBufferData (unsigned int dataSize, const void *data)
 Sets static index buffer data. More...
 
void setVertexBufferSubData (unsigned int offset, unsigned int size, const void *data)
 Uploads vertex buffer subdata with given offset and size. More...
 
void setIndexBufferSubData (unsigned int offset, unsigned int size, const void *data)
 Uploads index buffer subdata with given offset and size. More...
 
void deleteBuffer (unsigned int handle)
 Deletes vertex or index buffer. More...
 
void enableVertexAttributeArray (unsigned int attributeHandle)
 Sets vertex attribute array to be enabled. More...
 
void disableVertexAttributeArray (unsigned int attributeHandle)
 Sets vertex attribute array to be disabled. More...
 
void applyVertexAttributeArrays ()
 Update vertex attribute configurations to the graphics driver. More...
 
void setVertexBufferPointer (unsigned int location, int dimension, GraphicsDataType attributeDataType, int stride, const void *data)
 Sets attribute data source for currently enabled vertex attribute array. More...
 
void setActiveShaderHandle (unsigned int activeShaderHandle, int const *fixedUniformMap, const int *vertexAttributeMap)
 Sets active shader for renderer. More...
 
unsigned int getActiveShaderHandle () const
 Gets active shader handle from renderer. More...
 
const int * getActiveShaderAttributeMap () const
 Gets active vertex attribute map from renderer. More...
 
const int * getActiveFixedUniformMap () const
 Gets active fixed uniform map from renderer. More...
 
void setDefaultFramebuffer (unsigned int frameBufferHandle)
 Specifies default frame buffer (screen) for renderer. More...
 
void setActiveFramebuffer (unsigned int frameBufferHandle)
 Sets active frame buffer for renderer. More...
 
void setColorBufferCount (unsigned int drawBufferCount)
 Sets the number of draw buffers for currently active framebuffer. More...
 
void resetActiveFramebuffer ()
 Resets active frame buffer for renderer to default (screen). More...
 
void setActiveFramebufferCallback (FramebufferCallback callbackFunction)
 Sets callback function that is called after setActiveFramebuffer. More...
 
unsigned int getActiveFramebuffer () const
 Gets active frame buffer handle from. More...
 
void readPixels (int x, int y, int width, int height, GraphicsFormat format, void *pixels)
 Reads the pixels from the current frame buffer. More...
 
GraphicsFormat getNativePixelReadFormat ()
 Returns native pixel read format from renderer. More...
 
void beginMaterialSetup ()
 Begins a material for renderer. More...
 
void endMaterialSetup ()
 Ends a material for renderer. More...
 
void beginVertexArray ()
 Begins set of vertex arrays. More...
 
void setVertexArrayData (VertexAttribute::Semantic attribute, const void *data)
 Sets vertex array data. More...
 
void setVertexArrayData (VertexAttribute::Semantic attribute, GraphicsDataType dataType, const void *data)
 
void endVertexArray (GraphicsPrimitiveType primitiveType, unsigned int count)
 Ends vertex array. Renders the specified vertex lists and finishes the usage. More...
 
unsigned int getCurrentVertexArrayFlags () const
 Gets the current vertex array flags from renderer. More...
 
const void * getCurrentVertexArrayAttributeData (VertexAttribute::Semantic attribute) const
 Gets current vertex array data from renderer. Reset when switching the shader. More...
 
void setLineWidth (float lineWidth)
 Sets line rendering width for renderer. More...
 
void flush () const
 Flushes the GPU pipeline, forces all commands to be executed in finite time. More...
 
void pushStatistics ()
 
void popStatistics ()
 
unsigned int getIndexCount () const
 Gets index count from renderer. More...
 
unsigned int getTriangleCount () const
 Gets triangle count from renderer. More...
 
unsigned int getVertexCount () const
 Gets vertex count from renderer. More...
 
unsigned int getBatchCount () const
 Gets batch count from renderer (number of draw calls, such as drawElements and drawArrays). More...
 
unsigned int getShaderSwitchCount () const
 Gets shader switches. More...
 
unsigned int getUniformSendCount () const
 Gets uniform sending count from renderer. More...
 
unsigned int getTextureSwitchCount () const
 Gets number of texture switches from renderer. More...
 
unsigned int getFramebufferSwitchCount () const
 Gets number of framebuffer switches from renderer. More...
 
unsigned int getBufferSwitchCount () const
 Gets number of buffer switches (VBO + IBO) from renderer. More...
 
unsigned int getHeavyweightCallCount () const
 Returns potential heavyweight calls such as buffer or texture updates and glFinish from renderer. More...
 
bool isShaderBinaryFormatSupported (unsigned int glShaderBinaryFormat) const
 Checks if GL shader binary format is supported. More...
 
bool isProgramBinaryFormatSupported (unsigned int glProgramBinaryFormat) const
 Checks if GL program binary format is supported. More...
 
void setGPUCallsEnabled (bool enabled)
 Sets GPU calls enabled / disabled. More...
 
bool GPUCallsIsEnabled () const
 Checks if GPU calls are enabled. More...
 
bool isSupported (Support feature) const
 Is coverage buffer supported or not. More...
 
Multisample getMultisampleSupport () const
 Return support for multisample textures and renderbuffers. More...
 
ProgramBinary getProgramBinarySupport () const
 Return support for program binaries. More...
 
HalfFloatTexture getHalfFloatTextureSupport () const
 Return support for half float texture format. More...
 
HalfFloatVertexAttribute getHalfFloatVertexAttributeSupport () const
 Return support for half-float vertex attribute. More...
 
bool isHalfFloatVertexAttributeSupported () const
 Indicates whether half-float vertex attribute is supported in any fashion. More...
 
FloatTexture getFloatTextureSupport () const
 Return support for float texture format. More...
 
TexStorage getTexStorageSupport () const
 Return support for tex storage. More...
 
bool getTexStorageSupport (Texture::Type type, unsigned int samples) const
 Return support for tex storage. More...
 
void * createImageObject (void *dataPointer, int target, int *attributes)
 Creates image object, returns NULL if no hardware support. More...
 
void deleteImageObject (void *imageObject)
 Deletes image object created with createImageObject. More...
 
void setImageTargetTexture (Texture::Type type, void *imageObject)
 Sets image object bound to currently bound texture (type). More...
 
float getMaximumAnisotropy () const
 Gets maximum anisotropy. More...
 
unsigned int getMaximumTextureSize (Texture::Type textureType) const
 Gets maximum texture side size. More...
 
unsigned int getMaximumRenderbufferSize () const
 Gets maximum renderbuffer size. More...
 
unsigned int getMaximumViewportWidth () const
 Gets maximum viewport width. More...
 
unsigned int getMaximumViewportHeight () const
 Gets maximum viewport height. More...
 
unsigned int getMaximumVertexAttributeCount () const
 Gets maximum vertex attribute count. More...
 
unsigned int getMaximumSampleCount () const
 Gets maximum sample count for multisample. More...
 
int getColorReadFormat ()
 Returns GL constant for the color read format used in reading back data from framebuffer (RendererReadPixels). More...
 
int getColorReadType ()
 Returns GL constant for the color read type used in reading back data from framebuffer (RendererReadPixels). More...
 
void invalidateAllocations ()
 Invalidates all handles from renderer without affecting GL state. More...
 
::KzcGPUBufferManager * getGPUBufferManager () const
 Gets GPU buffer manager from renderer. More...
 
void logOpenGLInformation (unsigned int flags) const
 Logs information about renderer capabilities. More...
 
void resolveMultisample (unsigned int sourceFramebuffer, unsigned int destinationFramebuffer, unsigned int srcOffsetX, unsigned int srcOffsetY, unsigned int srcWidth, unsigned int srcHeight, unsigned int dstOffsetX, unsigned int dstOffsetY, unsigned int dstWidth, unsigned int dstHeight, bool color, bool depth, bool stencil)
 Resolve multisample framebuffer. More...
 
void resolveMultisample (unsigned int sourceFramebuffer, unsigned int destinationFramebuffer, unsigned int srcOffsetX, unsigned int srcOffsetY, unsigned int srcWidth, unsigned int srcHeight, unsigned int dstOffsetX, unsigned int dstOffsetY, unsigned int dstWidth, unsigned int dstHeight)
 Resolve multisample framebuffer. More...
 
void resolveMultisample (Texture &src, Texture &dst, unsigned int offsetX, unsigned int offsetY, unsigned int width, unsigned int height, bool color, bool depth)
 Resolve multisample samples from source texture into destination texture. More...
 
void resolveMultisample (Texture &src, Texture &dst, unsigned int offsetX, unsigned int offsetY, unsigned int width, unsigned int height)
 Resolve multisample samples from source texture into destination texture. More...
 
ViewportRectangle getViewport () const
 Gets current viewport rectangle from renderer. More...
 
ViewportRectangle getScissor () const
 Gets current scissor rectangle from renderer. More...
 
void enableWorkaround (Workaround workaround)
 Enable a renderer workaround. More...
 
void disableWorkaround (Workaround workaround)
 Disable a renderer workaround. More...
 
bool isWorkaroundEnabled (Workaround workaround) const
 Return if workaround is enabled or not. More...
 
void setWorkaroundEnable (Workaround workaround, bool enabled)
 Set workaround enable state to true or false. More...
 
const KzcMemoryManagergetMemoryManager () const
 
GraphicsFormat findValidTextureFormat (GraphicsFormat format, unsigned int features) const
 Find a valid texture format which is supported by graphics adapter and is compatible with specified format. More...
 
unsigned int getFeatures (GraphicsFormat format) const
 Describes what the specified format can be used for in the specified renderer. More...
 
bool supports (GraphicsFormat format, unsigned int features) const
 Returns whether format supports requested features. More...
 
bool supportsTexture (GraphicsFormat format) const
 Returns whether format can be used as texture by the specified renderer. More...
 
bool supportsRenderbuffer (GraphicsFormat format) const
 Returns whether format can be used as renderbuffer by the specified renderer. More...
 
bool supportsColorAttachment (GraphicsFormat format) const
 Returns whether format can be used as color attachment in framebuffers. More...
 
bool supportsDepthStencilAttachment (GraphicsFormat format) const
 Returns whether format can be used as depth/stencil attachment in framebuffers. More...
 
GraphicsFormat getFallback (GraphicsFormat format, unsigned int usageFlags) const
 Returns a fallback format which supports specified usage flags. More...
 
GraphicsFormat getDepthStencilFormatForRenderbuffer (bool depth, bool stencil) const
 Returns a depth/stencil renderbuffer format which is supported by renderer. More...
 
GraphicsFormat getDepthStencilFormatForTexture (bool depth, bool stencil) const
 Returns a depth/stencil texture format which is supported by renderer. More...
 
void applyAttributePointer (unsigned int location, int dimension, GraphicsDataType dataType, int stride, const void *data) const
 For given vertex attribute, specified by attribute location, configures attribute dimension, datatype, stride and starting offset in current vertex buffer. More...
 
void getGLFormatTriplet (GraphicsFormat format, unsigned int features, unsigned int *out_glFormat, unsigned int *out_glInternalFormat, unsigned int *out_glType) const
 Returns GL API format, internal format, type triplet for given Format. More...
 
bool supportsTexStorage (GraphicsFormat format, unsigned int features) const
 Returns true if graphics format supports texture storage. More...
 
void clearUniformCaches ()
 Free memory used by uniform caches. More...
 
void advanceGlobalTime (chrono::milliseconds deltaTime)
 Advances renderer wall clock with time delta. More...
 
chrono::milliseconds getGlobalTime () const
 Gets wall clock time in milliseconds since program start. More...
 
int getGlesVersion () const
 Returns supported OpenGL ES version number. More...
 

Static Public Member Functions

static bool isImplicitMultisampleSupport (Multisample multisampleSupport)
 Tell if multisample support is of implicit type. More...
 
static ClearMode getClearMode (GraphicsFormat format)
 

Member Typedef Documentation

typedef void(* kanzi::Renderer::FramebufferCallback) (unsigned int frameBufferHandle)

Callback prototype for setActiveFramebuffer.

Member Enumeration Documentation

Multisample support code path in Renderer.

Enumerator
MultisampleNone 

No multisample support.

MultisampleARB 

Multisample using desktop OpenGL.

MultisampleES2NVidia 

Multisample using NVidia extensions for OpenGL ES 2.

MultisampleES3 

Multisample using OpenGL ES 3 BlitFramebuffer.

MultisampleES2Ext 

Multisample using OpenGL ES 2 multivendor extension.

MultisampleES2Img 

Multisample using Imagination Technologies extension for OpenGL ES 2.

Program binary support code path in Renderer.

Enumerator
ProgramBinaryNone 

No program binary support.

ProgramBinaryARB 

Program binary using desktop OpenGL.

ProgramBinaryES3 

Program binary using OpenGL ES 3.

ProgramBinaryES2Ext 

Program binary using OpenGL ES 2 multivendor extension.

Half float texture support code path in Renderer.

Enumerator
HalfFloatTextureNone 

No support for half float textures.

HalfFloatTextureARB 

Half float textures supported using desktop OpenGL.

HalfFloatTextureES3 

Half float textures supported using OpenGL ES 3.

HalfFloatTextureES2Ext 

Half float textures supported using OpenGL ES 2 multivendor extension.

Half float vertex attribute code path in Renderer.

Enumerator
HalfFloatVertexAttributeNone 

Half-float vertex attribute not supported.

HalfFloatVertexAttributeDefault 

Half-float vertex attribute default path.

HalfFloatVertexAttributeOES 

Half-float vertex attribute OES path.

Float texture support code path in Renderer.

Enumerator
FloatTextureNone 

No support for float textures.

FloatTextureARB 

Float textures supported using desktop OpenGL.

FloatTextureES3 

Float textures supported using OpenGL ES 3.

FloatTextureES2Ext 

Float textures supported using OpenGL ES 2 multivendor extension.

Enumerator
TexStorageNone 
TexStorageMultisampleARB 
TexStorageARB 
TexStorageES2Ext 
TexStorageES3 
TexStorageES31 
TexStorageES32 

Framebuffer invalidation support code path in Renderer.

Enumerator
InvalidateFramebufferNone 

No support for framebuffer invalidation.

InvalidateFramebufferARB 

Framebuffer invalidation supported using desktop OpenGL.

InvalidateFramebufferES3 

Framebuffer invalidation supported using OpenGL ES 3.

InvalidateFramebufferES2Ext 

Framebuffer invalidation supported using OpenGL ES 2 multivendor extension.

Renderer state enumerations.

Enumerator
StateDepthTest 

Renderer state for depth testing.

StateCullFace 

Renderer state for cull face.

StateBlend 

Renderer state for blending.

StateDepthWrite 

Renderer state for depth write.

StateStencilTest 

Renderer state for stencil test.

StateStencilWrite 

Renderer state for stencil write.

StateMultisample 

Renderer state for multi-sampling.

StateScissorTest 

Renderer state for scissor test.

StateCoverageWrite 

Renderer state for coverage write.

StateCount 

Maximum count of renderer states.

List of active matrices renderer keeps track of.

Enumerator
FixedMatrixProjection 

Projection matrix.

FixedMatrixCamera 

Camera matrix.

FixedMatrixWorld 

Current world matrix.

FixedMatrixCameraWorld 

Current camera * world matrix.

FixedMatrixProjectionCameraWorld 

Current projection * camera * world matrix.

FixedMatrixCount 

Maximum amount of matrices.

Enumerator
SupportHalfFloatTextureFormatLinear 
SupportHalfFloatColorAttachment 
SupportNPOTTextureFilter 
SupportRenderToMipmapLevels 
SupportDepth16Renderbuffer 
SupportDepth16Texture 
SupportDepth24Renderbuffer 
SupportDepth24Texture 
SupportDepth24Stencil8Renderbuffer 
SupportDepth24Stencil8Texture 
SupportDepth32Renderbuffer 
SupportDepth32fRenderbuffer 
SupportDepth32fTexture 
SupportStencil8Renderbuffer 
SupportStencil8Texture 
SupportExternalTexture 
SupportTextureFilterAnisotropic 
SupportTextureSwizzle 
SupportSeamlessCubeMap 
SupportRGB8Renderbuffer 
SupportRG8Formats 
SupportRGFormats 
SupportIntegerFormats 
SupportRGB8Texture 
SupportRGBA8Renderbuffer 
SupportRGBA8Texture 
SupportDiscardFramebuffer 
SupportInvalidateFramebuffer 
SupportImplementationColorRead 
SupportKHRDebug 
SupportShaderBinary 
SupportMultipleRenderTargets 
SupportSRGB 
SupportSRGB8Texture 
SupportSRGB8TexStorage 
SupportETC1NPOT 
Support10_10_10_2VertexAttribute 
SupportDepthComparison 
SupportSNORMFormats 
SupportFloatTextureFormatLinear 
SupportFloatColorAttachment 
SupportTextureNorm16Formats 
SupportCount 
Enumerator
InformationGLVendor 
InformationGLRenderer 
InformationGLVersion 
InformationGLShadingLanguageVersion 
InformationGLExtensions 
InformationFormatSupport 
InformationShaderBinarySupport 
InformationProgramBinarySupport 
InformationFeatureSupport 
InformationImplementationDependent 
InformationDebug 
InformationAll 

Per color buffer clear setting.

Enumerator
ClearModeDisabled 

Color buffer will not be cleared.

ClearModeUnsignedNormalized 

Clear color with unsigned normalized color.

ClearModeUnsignedInteger 

Clear color buffer with unsigned integer value.

Note
Integer color buffers require OpenGL ES 3
ClearModeSignedInteger 

Clesr color buffer with signed integer value.

Note
Integer color buffers require OpenGL ES 3
ClearModeFloat 

Clear color buffer with float value.

Note
Float color buffers require OpenGL ES 3.2 or EXT_color_buffer_half_float extension
Enumerator
WorkaroundMaliHalfFloatTextureCoordinate 

Disable support for half float vertex attributes on Mali devices.

WorkaroundTegra3ColorBufferHalfFloat 

Enable color buffer half float on Tegra 3.

WorkaroundAdreno330ColorBufferHalfFloat 

Enable color buffer half float on Adreno 330.

WorkaroundChromiumTextureImageUnitCount 

VirtualBox/Chromium incorrectly reports number of image units.

WorkaroundPVRFrameAMDHost 

Disable half float vertex attributes.

WorkaroundAMDCompressedTexStorage 

Disable tex storage.

WorkaroundPVRFrameDepth32f 

Disable 32f depth buffer format.

WorkaroundVivanteDepth32f 

Disable 32f depth buffer format.

WorkaroundFaultyRequiredInternalformat 

Disable GL_OES_required_internalformat when vendor is known to have drivers with related issues.

WorkaroundCount 

Constructor & Destructor Documentation

kanzi::Renderer::Renderer ( const KzcMemoryManager memoryManager)

Creates a new renderer object.

kanzi::Renderer::~Renderer ( )

Member Function Documentation

static bool kanzi::Renderer::isImplicitMultisampleSupport ( Multisample  multisampleSupport)
inlinestatic

Tell if multisample support is of implicit type.

Implicit multisample does not require a separate resolve and does not have explicitly accessible samples.

Parameters
multisampleSupportMultisample support.
Returns
True if implicit multisample support, false if not.
void kanzi::Renderer::resetFrame ( )

Resets frame for core renderer, that is, counters for logging rendering infos (triangle count etc.).

void kanzi::Renderer::reset ( )

Resets renderer, e.g. resets its caches and states and syncs renderer variables with actual GL states.

void kanzi::Renderer::initialize ( kzUint  vertexBufferPoolSize,
kzUint  indexBufferPoolSize 
)

Initializes renderer object. Requires graphics context.

void kanzi::Renderer::uninitialize ( )

Uninitializes renderer object.

bool kanzi::Renderer::isInitialized ( ) const

Tells whether the renderer is initialized.

Returns
True if the renderer is initialized.
void kanzi::Renderer::setActiveGraphicsOutput ( GlGraphicsOutput glGraphicsOutput)

Sets active surface context for renderer.

GlGraphicsOutput* kanzi::Renderer::getActiveGraphicsOutput ( ) const

Gets active surface context from renderer.

KzsWindow* kanzi::Renderer::getActiveWindow ( ) const
KzsSurface* kanzi::Renderer::getActiveSurface ( ) const
KzsGlGraphicsContext* kanzi::Renderer::getActiveGraphicsContext ( ) const
enum KzsSurfaceType kanzi::Renderer::getActiveSurfaceType ( ) const
::KzsOpenGlVendor kanzi::Renderer::getActiveSurfaceVendor ( ) const
void kanzi::Renderer::enableState ( State  state)

Enables a specific renderer state.

void kanzi::Renderer::disableState ( State  state)

Disables a specific renderer state.

void kanzi::Renderer::setState ( State  state,
bool  enable 
)

Enables or disables the state of a specific renderer state.

bool kanzi::Renderer::getState ( State  state) const

Returns state of a specific renderer state.

void kanzi::Renderer::clear ( )

Clears currently bound framebuffer with requested buffers.

Buffers can be requested to be clered with addClearTarget() and addClearColor() functions.

void kanzi::Renderer::resetClearTarget ( )

Resets clear targets for renderer.

void kanzi::Renderer::addClearTarget ( GraphicsClearTarget  target)

Sets a clearing target for renderer.

See also
addClearColor()
Note
You must use addClearColor to clear color buffers 1..3 (GraphicsClearTargetColor1..3)
Parameters
targetThe buffer to clear, must be GraphicsClearTargetColor0, GraphicsClearTargetDepth or GraphicsClearTargetStencil
static ClearMode kanzi::Renderer::getClearMode ( GraphicsFormat  format)
static
void kanzi::Renderer::addClearColor ( unsigned int  drawBuffer,
uint32_t  red,
uint32_t  green,
uint32_t  blue,
uint32_t  alpha 
)

Register color clear for unsigned integer color buffer.

All registered clears are performed when clear() is called.

Note
OpenGL ES 3 is required for integer color buffers.
See also
clear()
Parameters
drawBufferIndex of color buffer to clear (0..3).
redClear color red channel value.
greenClear color green channel value.
blueClear color blue channel value.
alphaClear color alpha channel value.
void kanzi::Renderer::addClearColor ( unsigned int  drawBuffer,
int32_t  red,
int32_t  green,
int32_t  blue,
int32_t  alpha 
)

Register color clear for signed integer color buffer.

All registered clears are performed when clear() is called.

Note
OpenGL ES 3 is required for integer color buffers.
See also
clear()
Parameters
drawBufferIndex of color buffer to clear (0..3).
redClear color red channel value.
greenClear color green channel value.
blueClear color blue channel value.
alphaClear color alpha channel value.
void kanzi::Renderer::addClearColor ( unsigned int  drawBuffer,
float  red,
float  green,
float  blue,
float  alpha 
)

Register color clear for float color buffer.

All registered clears are performed when clear() is called.

Note
OpenGL ES 3.2 or EXT_color_buffer_half_float is required for float color buffers.
OpenGL ES 3.0 is required for drawBuffer > 0
See also
clear()
Parameters
drawBufferIndex of color buffer to clear (0..3 for OpenGL ES 3, must be 0 for OpenGL ES 2).
redClear color red channel value.
greenClear color green channel value.
blueClear color blue channel value.
alphaClear color alpha channel value.
void kanzi::Renderer::addClearColor ( unsigned int  drawBuffer,
ColorRGBA  colorRGBA 
)

Register color clear for unsigned normalized color buffer.

All registered clears are performed when clear() is called.

Note
OpenGL ES 3.0 is required for drawBuffer > 0
See also
clear()
Parameters
drawBufferIndex of color buffer to clear (0..3 for OpenGL ES 3, must be 0 for OpenGL ES 2).
redClear color red channel value.
greenClear color green channel value.
blueClear color blue channel value.
alphaClear color alpha channel value.
void kanzi::Renderer::addClearColor ( unsigned int  drawBuffer,
ClearMode  clearMode 
)

Register color clear with value 0.

All registered clears are performed when clear() is called.

Note
OpenGL ES 3.0 is required for drawBuffer > 0
See also
clear()
Parameters
drawBufferIndex of color buffer to clear (0..3 for OpenGL ES 3, must be 0 for OpenGL ES 2).
clearModeClearMode of the color buffer.
void kanzi::Renderer::removeClearTarget ( GraphicsClearTarget  target)

Removes a clearing target for renderer.

bool kanzi::Renderer::hasClearTarget ( GraphicsClearTarget  target) const

Sees if renderer has specific clear target.

bool kanzi::Renderer::isClearEnabled ( ) const

See if clear is enabled.

void kanzi::Renderer::setClearColor ( ColorRGBA  colorRGBA)

Set clear color for renderer.

void kanzi::Renderer::setColorWriteMode ( GraphicsColorWriteMode  colorWriteMode)

Set a color write mode for renderer.

GraphicsColorWriteMode kanzi::Renderer::getColorWriteMode ( ) const

Gets current color write mode from renderer.

void kanzi::Renderer::setScissorTest ( optional< ViewportRectangle scissor)

Sets scissor test state and optional rectangle for renderer.

void kanzi::Renderer::setClearDepthValue ( float  clearDepthValue)

Set clear depth for renderer.

void kanzi::Renderer::setClearStencil ( int  stencilClearValue)

Set clear stencil for renderer.

void kanzi::Renderer::setViewport ( ViewportRectangle  viewport)

Sets an active view port for renderer.

void kanzi::Renderer::setVertexBuffer ( unsigned int  vertexBuffer)

Sets a vertex buffer for renderer.

void kanzi::Renderer::setIndexBuffer ( unsigned int  indexBuffer)

Sets an index buffer for renderer.

void kanzi::Renderer::drawBuffers ( )

Render buffers that are currently bound.

void kanzi::Renderer::setVertexCount ( unsigned int  vertexCount)

Sets vertex count for renderer.

void kanzi::Renderer::setIndexCount ( unsigned int  indexCount)

Sets the index count for renderer.

void kanzi::Renderer::setIndexData ( void *  indexData)

Sets index data for renderer.

void kanzi::Renderer::setPrimitiveType ( GraphicsPrimitiveType  prmitiveType)

Sets the primitive type for renderer.

int kanzi::Renderer::getUniformLocationSlow ( const string &  uniformName) const

Finds uniform location for given uniform from active shader.

The data will be stored to uniform cache and fetched from in subsequent calls.

Note
Comparing strings is expensive, so avoid calling this function.
unsigned int kanzi::Renderer::getUniformArrayLength ( const char *  uniformName) const

Returns array uniform length for given uniform.

If uniform with given name is not found, returns 0. If uniform is not an array, returns 1.

void kanzi::Renderer::setUniformInteger ( int  value,
int  uniformLocation 
)

Sets integer uniform for renderer, using currently bound shader.

void kanzi::Renderer::setUniformFloat ( float  value,
int  uniformLocation 
)

Sets float uniform for renderer, using currently bound shader.

void kanzi::Renderer::setUniformFloatArray ( ShaderProgram::FixedUniform  fixedUniform,
size_t  count,
const float *  values 
)

Sets uniform float array for renderer.

void kanzi::Renderer::setUniformFloatArray ( int  uniformLocation,
size_t  count,
const float *  values 
)

Sets uniform float array for renderer.

void kanzi::Renderer::setUniformVec2 ( Vector2  value,
int  uniformLocation 
)

Sets uniform vec2 for renderer, using currently bound shader.

void kanzi::Renderer::setUniformVec3 ( Vector3  value,
int  uniformLocation 
)

Sets uniform vec3 for renderer, using currently bound shader.

void kanzi::Renderer::setUniformVec4 ( Vector4  value,
int  uniformLocation 
)

Sets uniform vec4 for renderer, using currently bound shader.

void kanzi::Renderer::setUniformVecArray ( ShaderProgram::FixedUniform  fixedUniform,
size_t  count,
const Vector3 values 
)

Sets arbitrary vector array with dimension to renderer, using currently bound shader.

void kanzi::Renderer::setUniformVecArray ( int  uniformLocation,
size_t  count,
const Vector3 values 
)

Sets arbitrary vector array with dimension to renderer, using currently bound shader.

void kanzi::Renderer::setUniformVecArray ( ShaderProgram::FixedUniform  fixedUniform,
size_t  count,
const Vector4 values 
)

Sets arbitrary vector array with dimension to renderer, using currently bound shader.

void kanzi::Renderer::setUniformVecArray ( int  uniformLocation,
size_t  count,
const Vector4 values 
)

Sets arbitrary vector array with dimension to renderer, using currently bound shader.

void kanzi::Renderer::setUniformColorRGBA ( ColorRGBA  value,
int  uniformLocation 
)

Sets uniform colorRGBA for renderer, using currently bound shader.

void kanzi::Renderer::setUniformMatrix3x3 ( Matrix3x3  value,
int  uniformLocation 
)

Sets matrix3x3 uniform for renderer, using currently bound shader.

void kanzi::Renderer::setUniformMatrix4x4 ( Matrix4x4  value,
int  uniformLocation 
)

Sets matrix4x4 uniform for renderer, using currently bound shader.

void kanzi::Renderer::setActiveScalar ( GraphicsScalar  scalar,
float  value 
)

Switches an scalar value for renderer if necessary, e.g. depth clear value.

float kanzi::Renderer::getActiveScalar ( GraphicsScalar  scalar) const

Returns a current scalar value from renderer.

void kanzi::Renderer::setBlendMode ( GraphicsBlendMode  blendMode)

Sets a blend mode for renderer.

GraphicsBlendMode kanzi::Renderer::getBlendMode ( ) const

Gets a blend mode for renderer.

void kanzi::Renderer::setCullMode ( GraphicsCullMode  cullMode)

Sets a cull mode for renderer.

GraphicsCullMode kanzi::Renderer::getCullMode ( ) const

Gets a cull mode for renderer.

void kanzi::Renderer::setDepthTest ( GraphicsCompareFunction  depthMode)

Sets a depth pass mode for renderer.

GraphicsCompareFunction kanzi::Renderer::getDepthTest ( ) const

Gets a depth pass mode for renderer.

void kanzi::Renderer::setStencilFunction ( GraphicsCompareFunction  stencilCompareFunction,
unsigned int  referenceValue,
unsigned int  maskValue 
)

Sets a stencil function for renderer.

void kanzi::Renderer::setStencilOperation ( GraphicsStencilOperation  stencilFailOperation,
GraphicsStencilOperation  stencilPassDepthFailOperation,
GraphicsStencilOperation  stencilPassDepthPassOperation 
)

Sets a stencil operation for renderer.

void kanzi::Renderer::getStencilFunction ( GraphicsCompareFunction out_stencilCompareFunction,
unsigned int *  out_referenceValue,
unsigned int *  out_maskValue 
) const

Gets stencil function from renderer.

void kanzi::Renderer::getStencilOperation ( GraphicsStencilOperation out_stencilFailOperation,
GraphicsStencilOperation out_stencilPassDepthFailOperation,
GraphicsStencilOperation out_stencilPassDepthPassOperation 
) const

Gets a stencil operation from renderer.

void kanzi::Renderer::setMatrix ( FixedMatrix  matrixType,
Matrix4x4  matrix 
)

Sets matrix for a renderer.

Matrix4x4 kanzi::Renderer::getMatrix ( FixedMatrix  matrixType) const

Gets a matrix from renderer.

void kanzi::Renderer::calculateProjectionCameraWorldMatrix ( )

Calculates projection * camera * world matrix.

void kanzi::Renderer::applyTransformation ( )

Applies transformations from renderer to GPU.

void kanzi::Renderer::setActiveTextureUnit ( unsigned int  textureUnit)

Sets texture unit active.

void kanzi::Renderer::applyTextureSizeUniforms ( ShaderTextureUniform  textureUniforms,
unsigned int  textureWidth,
unsigned int  textureHeight 
)

Applies texture uniforms for the renderer.

void kanzi::Renderer::applyTexture ( int  textureUniformLocation,
unsigned int  textureHandle,
Texture::Type  type 
)

Applies texture for renderer using currently bound shader (required) and texture uniform (required).

void kanzi::Renderer::setUniformTexture ( int  uniformLocation)

Sets texture uniform location for renderer, effectively used for storing the integer in renderer to retrieve it when binding textures.

int kanzi::Renderer::getUniformTexture ( ) const

Gets texture uniform location from renderer.

void kanzi::Renderer::detachTextureHandle ( unsigned int  textureHandle)

Detaches texture handle from all texture units it has been applied for.

void kanzi::Renderer::detachTexture ( )

Detaches texture from rendering.

void kanzi::Renderer::invalidateTextureHandle ( unsigned int  textureHandle)

Invalidates texture handle from renderer without affecting GL state.

pair<Texture::Type, unsigned int> kanzi::Renderer::bindTexture ( Texture::Type  type,
unsigned int  texture 
)

Binds specified texture of specified type to currently active texture unit.

Parameters
typeType of texture to bind.
textureTexture object handle to bind.
Returns
Texture type and object handle that was previously bound to the currently active texture unit.
unsigned int kanzi::Renderer::generateTexture ( )

Generates new texture for renderer.

void kanzi::Renderer::setTextureImage2D ( unsigned int  glTextureImageTarget,
unsigned int  mipmapLevel,
GraphicsFormat  format,
unsigned int  width,
unsigned int  height,
const void *  data 
)

Uploads texture data to GPU.

void kanzi::Renderer::setTextureSubImage2D ( unsigned int  glTextureImageTarget,
unsigned int  mipmapLevel,
GraphicsFormat  format,
unsigned int  x,
unsigned int  y,
unsigned int  width,
unsigned int  height,
const void *  data 
)

Uploads texture subimage data to GPU.

void kanzi::Renderer::textureStorage ( Texture::Type  type,
int  sampleCount,
int  mipmapLevelCount,
GraphicsFormat  format,
unsigned int  width,
unsigned int  height,
unsigned int  depth,
bool  fixedSampleLocations 
)

Specifies immutable texture format and shape.

void kanzi::Renderer::generateMipmaps ( Texture::Type  textureType)

Generates mipmaps for currently bound texture.

void kanzi::Renderer::deleteTexture ( unsigned int  textureHandle)

Deletes texture via renderer.

void kanzi::Renderer::setTextureAddressingMode ( Texture::Type  type,
Sampler::AddressingMode  texAddress 
)

Sets wrap mode for currently bound texture in current texture unit.

void kanzi::Renderer::setTextureFilter ( Texture::Type  type,
Sampler::Filter  mininificationFilter,
Sampler::Filter  magnificationFilter,
Sampler::MipmapMode  mipmapMode,
float  anisotropy 
)

Sets texture filter for currently bound texture in current texture unit.

Parameters
typeSelects which texture to edit (current 2d, cubemap etc.)
minificationFilterMinification filter for texture.
magnificationFilterMagnification filter for texture.
anisotropyAnisotropic filtering level for texture. Values <= 1.0f disable the feature.
void kanzi::Renderer::setTextureSwizzleMask ( Texture::Type  target,
const TextureSwizzleMask mask 
)

Sets texture swizzle mask for currently bound alpha only texture in current texture unit.

This method makes all the color channels map to the alpha channel. Note: Use this method only for GraphicsFormatALPHA8_UNORM texture format, and if the native OpenGL driver supports GL_ARB_texture_swizzle or GL_EXT_texture_swizzle extension.

Parameters
typeSelects which texture to edit (current 2d, cubemap etc.)
maskSwizzle mask for the texture. This can be a custom swizzle mask or chosen from the predefined ones: MaskRedWithAlpha, MaskGreenWithAlpha, MaskBlueWithAlpha or MaskAllWithAlpha.
void kanzi::Renderer::setTextureCompare ( Texture::Type  type,
bool  isEnabled,
GraphicsCompareFunction  textureCompareFunction 
)

Sets texture comparison function for currently bound texture in current texture unit.

Parameters
typeSelects which texture to edit (current 2d, cubemap etc.)
typeisEnabled If true, depth comparison mode will be enabled for the texture, otherwide depth comparison will be disabled.
textureCompareFunctionSelects which texture comparison function to use.
void kanzi::Renderer::setPixelStorePack ( unsigned int  packBytes)

Sets pack storage for renderer. Specifies how the pixel data is aligned.

void kanzi::Renderer::setPixelStoreUnpack ( unsigned int  unpackBytes)

Sets unpack storage for renderer. Specifies how the pixel data is aligned.

unsigned int kanzi::Renderer::createShader ( ShaderType  type)

Creates shader.

unsigned int kanzi::Renderer::createShaderProgram ( )

Creates shader program. Returns the handle to the program.

void kanzi::Renderer::refreshRenderContext ( bool  geometryRendering)

Refreshes render context to contain all proper states.

void kanzi::Renderer::attachShaderToProgram ( unsigned int  programHandle,
unsigned int  shaderHandle 
)

Attaches shader to program.

void kanzi::Renderer::detachShaderFromProgram ( unsigned int  programHandle,
unsigned int  shaderHandle 
)

Detaches shader from program.

void kanzi::Renderer::bindAttributeToLocation ( unsigned int  programHandle,
unsigned int  locationIndex,
kzString  attributeName 
)

Binds attribute to given location index, for example "kzPosition" to 0.

bool kanzi::Renderer::linkShaderProgram ( unsigned int  programHandle,
kzString  shaderName 
)

Links shader program with given handle.

bool kanzi::Renderer::compileSourceShader ( ShaderType  shaderType,
unsigned int  shaderHandle,
const char *const  shaderCode,
string_view  shaderName 
)

Compiles source shader and deploys it to GPU.

bool kanzi::Renderer::deployBinaryShader ( unsigned int  count,
const unsigned int *  shaders,
unsigned int  binaryFormat,
const void *  data,
unsigned int  dataSize 
)

Deploys binary shaders.

Returns
true if binary shader was accepted by the graphics driver.
bool kanzi::Renderer::deployBinaryProgram ( unsigned int  program,
unsigned int  binaryFormat,
const void *  data,
unsigned int  dataSize 
)

Initializes shader program from program binary data.

Program binaries are vendor, device and driver version specific. If deployBinaryProgram() succeeds, program is in linked state. If deployBinaryProgram() fails, program remains in previous state. See

See also
isProgramBinaryFormatSupported to check if specific program binary format is supported by graphics device. See
getProgramBinary to query back program binary of a previously linked GL shader program from graphics device.
Parameters
programGL shader program name to initialize from program binary data.
binaryFormatBinary format for data.
dataProgram binary data.
dataSizeNumber of bytes in data.
Returns
true if shader program was successfully initialized from program binary data, otherwise false.
string kanzi::Renderer::getProgramBinary ( unsigned int  program,
unsigned int &  binaryFormat 
)

Gets binary representation for GL shader program.

Program binaries are vendor, device and driver version specific.

See also
isProgramBinaryFormatSupported
deployBinaryProgram
Parameters
programGL shader program name to get program binary from.
binaryFormatGL program binary format will be returned here, or KZS_GL_NONE if no program binary format was supported by graphics device.
Returns
Program binary data. If no program binary format was supported by graphics device, size of data will be 0.
void kanzi::Renderer::deleteShaderProgram ( unsigned int  programHandle)

Deletes shader program and attached shaders.

void kanzi::Renderer::deleteShader ( unsigned int  shaderHandle)

Deletes shader.

int kanzi::Renderer::getFixedUniformLocation ( ShaderProgram::FixedUniform  fixedUniform) const

Returns fixed shader uniform location of given fixed uniform.

Returns
uniform location of the fixed uniform, -1 if uniform is not present.
unsigned int kanzi::Renderer::generateFramebuffer ( )

Generates new texture for renderer.

void kanzi::Renderer::deleteFramebuffer ( unsigned int  frameBufferHandle)

Deletes framebuffer.

void kanzi::Renderer::bindFramebuffer ( unsigned int  frameBufferHandle)

Binds framebuffer.

bool kanzi::Renderer::isFramebufferComplete ( )

Checks if the framebuffer status is complete.

If framebuffer status is not complete, error code will be logged.

Note
Detailed error condition is only available in debug builds.
Avoid calling isFramebufferComplete() in release builds, as this may cause graphics driver to slow down.
Returns
True if status is framebuffer complete, otherwise false.
void kanzi::Renderer::invalidateFramebufferAttachments ( Framebuffer::Target  target,
bitset< Surface::APIAttachmentCount attachments 
) const

Invalidates framebuffer attachments.

After invalidation, contents of specified attachments are undefined. The graphics driver may perform performance and memory optimizations when it knows that contents of specific attachments are no longer needed.

Parameters
targetFramebuffer target to invalidate.
attachmentsBits from Framebuffer::AttachmentBit to specify attachments to invalidate. Surfaces that are attached to these attachment points will be invalidated.
void kanzi::Renderer::framebufferTexture2D ( unsigned int  glTextureImageTarget,
Surface::APIAttachment  attachment,
unsigned int  textureHandle,
unsigned int  mipmapLevel,
unsigned int  implicitSampleCount 
)

Attaches texture to the currently active Framebuffer.

Parameters
imageTargetGL texture image target. For cubemap texture this specifies the cubemap face.
attachmentFramebuffer attachment point where texture should be attached to.
textureHandleGL texture object name to attach.
mipmapLevelMipmap level of texture to attach.
implicitSampleCountWhen implicit multisample textures are used, this specifies the number of samples to use. When implicit multisample textures are not used, value here must be 0.
void kanzi::Renderer::framebufferRenderbuffer ( Surface::APIAttachment  attachment,
unsigned int  renderbuffer 
)

Attaches renderbuffer to the currently active Framebuffer.

Parameters
attachmentFramebuffer attachment point where renderbuffer should be attached to.
renderbufferGL renderbuffer object name to attach.
unsigned int kanzi::Renderer::generateRenderbuffer ( )

Generates new texture for renderer.

Returns
Newly allocated GL renderbuffer object name.
void kanzi::Renderer::deleteRenderbuffer ( unsigned int  renderbuffer)

Deletes framebuffer.

Parameters
renderbufferGL renderbuffer object name to delete.
void kanzi::Renderer::bindRenderbuffer ( unsigned int  renderbuffer)

Binds framebuffer for editing.

Parameters
renderbufferGl renderbuffer object name to bind.
void kanzi::Renderer::renderbufferStorage ( GraphicsFormat  format,
unsigned int  width,
unsigned int  height,
unsigned int  explicitSampleCount 
)

Sets storage for currently bound renderbuffer.

Parameters
formatGraphicsFormat for the renderbuffer.
widthWidth for the renderbuffer in pixels.
heightHeight for the renderbuffer in pixels.
explicitSampleCountNumber of multisample samples.
unsigned int kanzi::Renderer::generateBuffer ( )

Generates new index or vertex buffer or uniform buffer object name.

void kanzi::Renderer::setVertexBufferData ( unsigned int  dataSize,
const void *  data 
)

Sets static vertex buffer data.

void kanzi::Renderer::setIndexBufferData ( unsigned int  dataSize,
const void *  data 
)

Sets static index buffer data.

void kanzi::Renderer::setVertexBufferSubData ( unsigned int  offset,
unsigned int  size,
const void *  data 
)

Uploads vertex buffer subdata with given offset and size.

void kanzi::Renderer::setIndexBufferSubData ( unsigned int  offset,
unsigned int  size,
const void *  data 
)

Uploads index buffer subdata with given offset and size.

void kanzi::Renderer::deleteBuffer ( unsigned int  handle)

Deletes vertex or index buffer.

void kanzi::Renderer::enableVertexAttributeArray ( unsigned int  attributeHandle)

Sets vertex attribute array to be enabled.

Deprecated:
Implicitly handled by beginVertexArray() and setVertexBufferPointer().
Parameters
attributeHandleindex to attribute to enable
void kanzi::Renderer::disableVertexAttributeArray ( unsigned int  attributeHandle)

Sets vertex attribute array to be disabled.

Deprecated:
Implicitly handled by beginVertexArray() and setVertexBufferPointer().
Parameters
attributeHandleindex to attribute to disable
void kanzi::Renderer::applyVertexAttributeArrays ( )

Update vertex attribute configurations to the graphics driver.

This should be called before each draw call if vertex attribute configuration has been changed with any of enableVertexAttributeArray(), disableVertexAttributeArray() or setVertexBufferPointer().

void kanzi::Renderer::setVertexBufferPointer ( unsigned int  location,
int  dimension,
GraphicsDataType  attributeDataType,
int  stride,
const void *  data 
)

Sets attribute data source for currently enabled vertex attribute array.

Note
Attribute will be sourced from the vertex buffer (GPU memory) which is current at the time of call to setVertexBufferPointer(). If current vertex buffer is zero, attribute data is sourced from CPU memory (also known as "client side data" in OpenGL).
Parameters
locationAttribute location.
dimensionNumber of vector components in the attribute. Valid values are 1, 2, 3 and 4.
attributeDataTypeData type for attribute.
strideStride, number of bytes to get from one vertex to the next vertex. Valid values are positive integers.
dataIf current vertex buffer is non-zero, this is offset in bytes to current vertex buffer GPU memory. If current vertex buffer is zero, this is CPU memory address to attribute data.
void kanzi::Renderer::setActiveShaderHandle ( unsigned int  activeShaderHandle,
int const *  fixedUniformMap,
const int *  vertexAttributeMap 
)

Sets active shader for renderer.

unsigned int kanzi::Renderer::getActiveShaderHandle ( ) const

Gets active shader handle from renderer.

const int* kanzi::Renderer::getActiveShaderAttributeMap ( ) const

Gets active vertex attribute map from renderer.

const int* kanzi::Renderer::getActiveFixedUniformMap ( ) const

Gets active fixed uniform map from renderer.

void kanzi::Renderer::setDefaultFramebuffer ( unsigned int  frameBufferHandle)

Specifies default frame buffer (screen) for renderer.

void kanzi::Renderer::setActiveFramebuffer ( unsigned int  frameBufferHandle)

Sets active frame buffer for renderer.

void kanzi::Renderer::setColorBufferCount ( unsigned int  drawBufferCount)

Sets the number of draw buffers for currently active framebuffer.

Note
OpenGL ES 3 is required for drawBufferCount > 1
Parameters
drawBufferCountNumber of color attachments
void kanzi::Renderer::resetActiveFramebuffer ( )

Resets active frame buffer for renderer to default (screen).

void kanzi::Renderer::setActiveFramebufferCallback ( FramebufferCallback  callbackFunction)

Sets callback function that is called after setActiveFramebuffer.

unsigned int kanzi::Renderer::getActiveFramebuffer ( ) const

Gets active frame buffer handle from.

void kanzi::Renderer::readPixels ( int  x,
int  y,
int  width,
int  height,
GraphicsFormat  format,
void *  pixels 
)

Reads the pixels from the current frame buffer.

GraphicsFormat kanzi::Renderer::getNativePixelReadFormat ( )

Returns native pixel read format from renderer.

void kanzi::Renderer::beginMaterialSetup ( )

Begins a material for renderer.

void kanzi::Renderer::endMaterialSetup ( )

Ends a material for renderer.

void kanzi::Renderer::beginVertexArray ( )

Begins set of vertex arrays.

void kanzi::Renderer::setVertexArrayData ( VertexAttribute::Semantic  attribute,
const void *  data 
)

Sets vertex array data.

void kanzi::Renderer::setVertexArrayData ( VertexAttribute::Semantic  attribute,
GraphicsDataType  dataType,
const void *  data 
)
void kanzi::Renderer::endVertexArray ( GraphicsPrimitiveType  primitiveType,
unsigned int  count 
)

Ends vertex array. Renders the specified vertex lists and finishes the usage.

unsigned int kanzi::Renderer::getCurrentVertexArrayFlags ( ) const

Gets the current vertex array flags from renderer.

const void* kanzi::Renderer::getCurrentVertexArrayAttributeData ( VertexAttribute::Semantic  attribute) const

Gets current vertex array data from renderer. Reset when switching the shader.

void kanzi::Renderer::setLineWidth ( float  lineWidth)

Sets line rendering width for renderer.

void kanzi::Renderer::flush ( ) const

Flushes the GPU pipeline, forces all commands to be executed in finite time.

void kanzi::Renderer::pushStatistics ( )
void kanzi::Renderer::popStatistics ( )
unsigned int kanzi::Renderer::getIndexCount ( ) const

Gets index count from renderer.

unsigned int kanzi::Renderer::getTriangleCount ( ) const

Gets triangle count from renderer.

unsigned int kanzi::Renderer::getVertexCount ( ) const

Gets vertex count from renderer.

unsigned int kanzi::Renderer::getBatchCount ( ) const

Gets batch count from renderer (number of draw calls, such as drawElements and drawArrays).

unsigned int kanzi::Renderer::getShaderSwitchCount ( ) const

Gets shader switches.

unsigned int kanzi::Renderer::getUniformSendCount ( ) const

Gets uniform sending count from renderer.

unsigned int kanzi::Renderer::getTextureSwitchCount ( ) const

Gets number of texture switches from renderer.

unsigned int kanzi::Renderer::getFramebufferSwitchCount ( ) const

Gets number of framebuffer switches from renderer.

unsigned int kanzi::Renderer::getBufferSwitchCount ( ) const

Gets number of buffer switches (VBO + IBO) from renderer.

unsigned int kanzi::Renderer::getHeavyweightCallCount ( ) const

Returns potential heavyweight calls such as buffer or texture updates and glFinish from renderer.

Potential due to GPU implementation may decide when heavyweight occurs (e.g. reading cannot be performed before write operation finishes).

bool kanzi::Renderer::isShaderBinaryFormatSupported ( unsigned int  glShaderBinaryFormat) const

Checks if GL shader binary format is supported.

Parameters
glShaderBinaryFormatGL shader binary format to check
Returns
True if shader binary format is supported.
bool kanzi::Renderer::isProgramBinaryFormatSupported ( unsigned int  glProgramBinaryFormat) const

Checks if GL program binary format is supported.

Parameters
glProgramBinaryFormatGL program binary format to check
Returns
True if program binary format is supported.
void kanzi::Renderer::setGPUCallsEnabled ( bool  enabled)

Sets GPU calls enabled / disabled.

bool kanzi::Renderer::GPUCallsIsEnabled ( ) const

Checks if GPU calls are enabled.

bool kanzi::Renderer::isSupported ( Support  feature) const

Is coverage buffer supported or not.

Multisample kanzi::Renderer::getMultisampleSupport ( ) const

Return support for multisample textures and renderbuffers.

ProgramBinary kanzi::Renderer::getProgramBinarySupport ( ) const

Return support for program binaries.

HalfFloatTexture kanzi::Renderer::getHalfFloatTextureSupport ( ) const

Return support for half float texture format.

HalfFloatVertexAttribute kanzi::Renderer::getHalfFloatVertexAttributeSupport ( ) const
inline

Return support for half-float vertex attribute.

Returns
Half-float vertex attribute support enum.
bool kanzi::Renderer::isHalfFloatVertexAttributeSupported ( ) const
inline

Indicates whether half-float vertex attribute is supported in any fashion.

Returns
If supported true, otherwise false.
FloatTexture kanzi::Renderer::getFloatTextureSupport ( ) const

Return support for float texture format.

TexStorage kanzi::Renderer::getTexStorageSupport ( ) const

Return support for tex storage.

bool kanzi::Renderer::getTexStorageSupport ( Texture::Type  type,
unsigned int  samples 
) const

Return support for tex storage.

void* kanzi::Renderer::createImageObject ( void *  dataPointer,
int  target,
int *  attributes 
)

Creates image object, returns NULL if no hardware support.

Image object can be bound as texture input. Requires surface to be set for renderer via setSurface, otherwise throws an error.

void kanzi::Renderer::deleteImageObject ( void *  imageObject)

Deletes image object created with createImageObject.

void kanzi::Renderer::setImageTargetTexture ( Texture::Type  type,
void *  imageObject 
)

Sets image object bound to currently bound texture (type).

float kanzi::Renderer::getMaximumAnisotropy ( ) const

Gets maximum anisotropy.

unsigned int kanzi::Renderer::getMaximumTextureSize ( Texture::Type  textureType) const

Gets maximum texture side size.

unsigned int kanzi::Renderer::getMaximumRenderbufferSize ( ) const

Gets maximum renderbuffer size.

unsigned int kanzi::Renderer::getMaximumViewportWidth ( ) const

Gets maximum viewport width.

unsigned int kanzi::Renderer::getMaximumViewportHeight ( ) const

Gets maximum viewport height.

unsigned int kanzi::Renderer::getMaximumVertexAttributeCount ( ) const

Gets maximum vertex attribute count.

unsigned int kanzi::Renderer::getMaximumSampleCount ( ) const

Gets maximum sample count for multisample.

int kanzi::Renderer::getColorReadFormat ( )

Returns GL constant for the color read format used in reading back data from framebuffer (RendererReadPixels).

int kanzi::Renderer::getColorReadType ( )

Returns GL constant for the color read type used in reading back data from framebuffer (RendererReadPixels).

void kanzi::Renderer::invalidateAllocations ( )

Invalidates all handles from renderer without affecting GL state.

::KzcGPUBufferManager* kanzi::Renderer::getGPUBufferManager ( ) const

Gets GPU buffer manager from renderer.

void kanzi::Renderer::logOpenGLInformation ( unsigned int  flags) const

Logs information about renderer capabilities.

void kanzi::Renderer::resolveMultisample ( unsigned int  sourceFramebuffer,
unsigned int  destinationFramebuffer,
unsigned int  srcOffsetX,
unsigned int  srcOffsetY,
unsigned int  srcWidth,
unsigned int  srcHeight,
unsigned int  dstOffsetX,
unsigned int  dstOffsetY,
unsigned int  dstWidth,
unsigned int  dstHeight,
bool  color,
bool  depth,
bool  stencil 
)

Resolve multisample framebuffer.

Performs a blit from source framebuffer into destination framebuffer. This has implicit effect of resolving multisample samples.

Parameters
sourceFramebufferSource framebuffer ID.
destinationFramebufferDestination framebuffer ID.
srcOffsetXCopied area x offset in source framebuffer.
srcOffsetXCopied area y offset in source framebuffer.
srcWidthCopied area width in source framebuffer.
srcHeightCopied area height in source framebuffer.
dstOffsetXCopied area x offset in destination framebuffer.
dstOffsetXCopied area y offset in destination framebuffer.
dstWidthCopied area width in destination framebuffer.
dstHeightCopied area height in destination framebuffer.
colorSet to true to resolve color channel.
depthSet to true to resolve depth channel.
stencilSet to true to resolve stencil channel.
void kanzi::Renderer::resolveMultisample ( unsigned int  sourceFramebuffer,
unsigned int  destinationFramebuffer,
unsigned int  srcOffsetX,
unsigned int  srcOffsetY,
unsigned int  srcWidth,
unsigned int  srcHeight,
unsigned int  dstOffsetX,
unsigned int  dstOffsetY,
unsigned int  dstWidth,
unsigned int  dstHeight 
)
inline

Resolve multisample framebuffer.

Performs a blit from source framebuffer into destination framebuffer. This has implicit effect of resolving multisample samples. Only resolves color buffer.

Parameters
sourceFramebufferSource framebuffer ID.
destinationFramebufferDestination framebuffer ID.
srcOffsetXCopied area x offset in source framebuffer.
srcOffsetXCopied area y offset in source framebuffer.
srcWidthCopied area width in source framebuffer.
srcHeightCopied area height in source framebuffer.
dstOffsetXCopied area x offset in destination framebuffer.
dstOffsetXCopied area y offset in destination framebuffer.
dstWidthCopied area width in destination framebuffer.
dstHeightCopied area height in destination framebuffer.
void kanzi::Renderer::resolveMultisample ( Texture src,
Texture dst,
unsigned int  offsetX,
unsigned int  offsetY,
unsigned int  width,
unsigned int  height,
bool  color,
bool  depth 
)

Resolve multisample samples from source texture into destination texture.

Parameters
srcSource texture (with multisampling enabled).
dstDestination texture (with multisampling disabled).
widthWidth of the area to be copied from source to destination.
heightHeight of the area to be copied from source to destination.
colorSet to true to resolve color channel.
depthSet to true to resolve depth channel.
void kanzi::Renderer::resolveMultisample ( Texture src,
Texture dst,
unsigned int  offsetX,
unsigned int  offsetY,
unsigned int  width,
unsigned int  height 
)
inline

Resolve multisample samples from source texture into destination texture.

Only resolves color buffer.

Parameters
srcSource texture (with multisampling enabled).
dstDestination texture (with multisampling disabled).
widthWidth of the area to be copied from source to destination.
heightHeight of the area to be copied from source to destination.
colorSet to true to resolve color channel.
depthSet to true to resolve depth channel.
ViewportRectangle kanzi::Renderer::getViewport ( ) const
inline

Gets current viewport rectangle from renderer.

ViewportRectangle kanzi::Renderer::getScissor ( ) const
inline

Gets current scissor rectangle from renderer.

The rectangle is returned even if scissor test is not enabled. In this situation it is the last set scissor rectangle.

void kanzi::Renderer::enableWorkaround ( Workaround  workaround)
inline

Enable a renderer workaround.

void kanzi::Renderer::disableWorkaround ( Workaround  workaround)
inline

Disable a renderer workaround.

bool kanzi::Renderer::isWorkaroundEnabled ( Workaround  workaround) const
inline

Return if workaround is enabled or not.

void kanzi::Renderer::setWorkaroundEnable ( Workaround  workaround,
bool  enabled 
)
inline

Set workaround enable state to true or false.

const KzcMemoryManager* kanzi::Renderer::getMemoryManager ( ) const
inline
GraphicsFormat kanzi::Renderer::findValidTextureFormat ( GraphicsFormat  format,
unsigned int  features 
) const

Find a valid texture format which is supported by graphics adapter and is compatible with specified format.

Returned format must be binary compatible with the format parameter. For example, input ETC1 format can return ETC2 format).

Parameters
formatFormat that result format should be compatible with.
featuresUsage bits that should be supported by the format.
Returns
Format which is compatible with requested format, or GraphicsFormatNone if no such format exists.
unsigned int kanzi::Renderer::getFeatures ( GraphicsFormat  format) const

Describes what the specified format can be used for in the specified renderer.

bool kanzi::Renderer::supports ( GraphicsFormat  format,
unsigned int  features 
) const

Returns whether format supports requested features.

bool kanzi::Renderer::supportsTexture ( GraphicsFormat  format) const

Returns whether format can be used as texture by the specified renderer.

bool kanzi::Renderer::supportsRenderbuffer ( GraphicsFormat  format) const

Returns whether format can be used as renderbuffer by the specified renderer.

bool kanzi::Renderer::supportsColorAttachment ( GraphicsFormat  format) const

Returns whether format can be used as color attachment in framebuffers.

bool kanzi::Renderer::supportsDepthStencilAttachment ( GraphicsFormat  format) const

Returns whether format can be used as depth/stencil attachment in framebuffers.

GraphicsFormat kanzi::Renderer::getFallback ( GraphicsFormat  format,
unsigned int  usageFlags 
) const

Returns a fallback format which supports specified usage flags.

GraphicsFormat kanzi::Renderer::getDepthStencilFormatForRenderbuffer ( bool  depth,
bool  stencil 
) const

Returns a depth/stencil renderbuffer format which is supported by renderer.

GraphicsFormat kanzi::Renderer::getDepthStencilFormatForTexture ( bool  depth,
bool  stencil 
) const

Returns a depth/stencil texture format which is supported by renderer.

void kanzi::Renderer::applyAttributePointer ( unsigned int  location,
int  dimension,
GraphicsDataType  dataType,
int  stride,
const void *  data 
) const

For given vertex attribute, specified by attribute location, configures attribute dimension, datatype, stride and starting offset in current vertex buffer.

Note
Attribute data is sourced from the vertex buffer GPU memory which is current at the time of applyAttributePointer() call. If current vertex buffer is 0, attribute data is sourced from CPU memory (also known as "client side data" in OpenGL).
Parameters
locationAttribute location to modify.
dimensionDimension for attribute. Valid values are 1, 2, 3 and 4.
dataTypeData type for attribute.
strideStride for attribute. Valid values are positive integers.
dataStarting offset in current vertex buffer GPU memory for attribute data. If current vertex buffer is 0, this is starting address in CPU memory for attribute data.
void kanzi::Renderer::getGLFormatTriplet ( GraphicsFormat  format,
unsigned int  features,
unsigned int *  out_glFormat,
unsigned int *  out_glInternalFormat,
unsigned int *  out_glType 
) const

Returns GL API format, internal format, type triplet for given Format.

bool kanzi::Renderer::supportsTexStorage ( GraphicsFormat  format,
unsigned int  features 
) const

Returns true if graphics format supports texture storage.

void kanzi::Renderer::clearUniformCaches ( )

Free memory used by uniform caches.

void kanzi::Renderer::advanceGlobalTime ( chrono::milliseconds  deltaTime)

Advances renderer wall clock with time delta.

Parameters
deltaTimeWall clock delta time.
chrono::milliseconds kanzi::Renderer::getGlobalTime ( ) const

Gets wall clock time in milliseconds since program start.

Parameters
Wallclock time since program start.
int kanzi::Renderer::getGlesVersion ( ) const

Returns supported OpenGL ES version number.

Version is encoded into integer with the following formula: major version times 100 plus minor version times ten. For example, value 310 would mean version 3.1.

Returns
OpenGL ES version number.

The documentation for this class was generated from the following file: